<?php
namespace app\office\controller;

use think\Request;
use app\office\controller\Base;
use app\office\model\Position as PositionModel;

class Position extends OfficeBase
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    protected $filter=[];
    public function index()
    {
      //验证Cookie↓
      $this->checkCookie();
      // 引入navbar
      $this->setNavbar();
      $this->assign('title',"职位工程师列表");
      // 此处根据是否有搜索信息来进行筛选
      if(!input('?request.')){
        $data=input('request.');
        foreach($data as $k=>$v){
          if($v!=null& in_array($k,['is_sth','sth_num','static'])){     /* 使用in_array($k,['is_sth','sth_num','static'],是因为paginate传参是get方法,需要筛选变量 */
            $this->filter[$k]=$v;
          }
        }
      }
      $filter_msg=$this->filter;
      //注:此处使用了scope('static')后,不会显示static=0,即'删除'的数据
      $list=PositionModel::scope('static')->where($this->filter)->order('id','desc')->paginate(8,false,['query' =>$filter_msg]);   /* 这里用的是查询构建器的select()方法;或者可以使用模型的all()方法,$list=PositionModel::all(); */
      $countall=PositionModel::scope('static')->where($this->filter)->count();
      $this->assign('list',$list);
      $this->assign('count',count($list));
      $this->assign('countall',$countall);
      return $this->fetch();
    }

    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index_tree()
    {
      //验证Cookie↓
      $this->checkCookie();
      // 引入navbar
      $this->setNavbar();
      $this->assign('title',"职位工程师列表(树状)");
      // 获取无限分类列表
      $countall=PositionModel::scope('static')->where($this->filter)->count();
      $this->assign('countall',$countall);
      $position_tree=PositionModel::getTree();
      $this->assign('position_tree',$position_tree);
      return $this->fetch();
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
      //验证Cookie↓
      $this->checkCookie();
      // 引入navbar
      $this->setNavbar();
      $this->assign('title',"创建职位工程师");
      // 无限分来开始↓
      $position_tree=PositionModel::getTree();
      // dump( $position_tree);
      $this->assign('position_tree',$position_tree);
      // 无限分类结束↑
      // 获取雇员编号
      $code=$this->makeCode('position');
      $this->assign('code',$code);
      return $this->fetch();
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
      $position=new PositionModel;
      // 保存图片类文件
      // dump(input('post.'));
      if($file = $request->file('pic')){
        $position->pic_name=$this->savePic($file);
      }
      if($position->allowField(true)->validate(true)->save(input('post.'))){
        $this->success('职位工程师'.$position->code.":".$position->title.'新增成功','index','',1);
      }else{
        return $position->getError();
      }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
      //验证Cookie↓
      $this->checkCookie();
      // 引入navbar
      $this->setNavbar();
      $this->assign('title',"职位工程师信息");
      $position=PositionModel::get($id);
      $this->assign('position',$position);
      return $this->fetch();
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
      //验证Cookie↓
      $this->checkCookie();
      // 引入navbar
      $this->setNavbar();
      $this->assign('title',"职位工程师编辑");
      // 无限分来开始↓
      $position_tree=PositionModel::getTree();
      // dump( $position_tree);
      $this->assign('position_tree',$position_tree);
      // 无限分类结束↑
      $position=PositionModel::get($id)->getData();     /* 后面的getData()是在定义了获取器的情况下来获得原始数据 */
      $position['create_time']=date('Y-m-d',strtotime($position['create_time']));
      $position['update_time']=date('Y-m-d',strtotime($position['update_time']));
      $this->assign('position',$position);
      return $this->fetch();
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
      // 验证提交的数据
      $position = PositionModel::get($id);
      $data = input('post.');
      $result=$this->validate($data,'Position');
      if(true !== $result){
        return $result;
      }
      // 保存图片类文件
      if($file = $request->file('pic')){
        $position->pic_name=$this->savePic($file);
      }
      $position->title     =input('post.title');
      $position->parent_id =input('post.parent_id');
      $position->address   =input('post.address');
      $position->detail    =input('post.detail');
      $position->is_sth    =input('post.is_sth');
      $position->sth_num   =input('post.sth_num');
      $position->static    =input('post.static');
      if($position->allowField(true)->save()){
        $this->success('职位工程师'.$position->code.":".$position->title.'修改成功','index',2);
      }else{
        $this->success('数据修改失败,请联系管理员','index');
      }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
      //此处为彻底删除(还应该判断关联关系),入口在edit页面,'删除'实际上是更新,将static=0;
      $position=PositionModel::get($id);
      $result=PositionModel::destroy($id);       /* 可以使用delete方法 */
      if($result){
      // $this->success('职位工程师'.$position->code.":".$position->title.'删除成功','index');
        $this->redirect('index');
      }else{
        $this->error('职位工程师删除失败,请联系管理员','index');
      }
    }
}
